package itheima01;


import java.io.UnsupportedEncodingException;
import java.util.Arrays;

/*
    1.编码表: 存储字符和数字对应关系的一张表格
    2.编码: 字符 ---> 字节
    3.解码: 字节 ---> 字符


    4.中文windows操作系统,默认编码表: GBK
        GBK编码表: 一个汉字占2个字节

    5.IDEA默认编码表: UTF-8
        UTF-8编码表: 一个汉字占3个字节

    6.思考:
        (1)如何获取String的指定编码格式的字节内容?  编码
            String类的成员方法
                public byte[] getBytes(): 根据平台默认编码表(IDEA默认编码表: UTF-8),获取String的字节数组
                public byte[] getBytes(String charsetName) : 根据方法参数指定的编码表,获取String的字节数组
                    参数:
                       String charsetName: 编码表的名称   常用的编码表 GBK/UTF-8

        (2)如何把字节数组,按照指定编码格式,转换成String  解码
            String类的构造方法
            public String(byte[] bs):
                根据平台默认编码表(IDEA默认编码表: UTF-8),把构造方法参数中指定的字节数组,转换成String

            public String(byte[] bytes, String charsetName):
                根据构造方法指定编码表,把构造方法参数中指定的字节数组,转换成String


    你好 UTF-8编码: [-28, -67, -96, -27, -91, -67]
    你好 GBK编码: [-60, -29, -70, -61]

    问题:
        1.使用UTF-8编码(写出去),使用GBK解码(读进来)          浣犲ソ
        2.GBK编码(写出去),用UTF-8解码(读进来)               ���

 */
public class Demo01CodeTable {
    public static void main(String[] args) throws UnsupportedEncodingException {
        //获取 "你好"  的UTF-8编码
        byte[] bs1 = "你好".getBytes();//默认UTF-8  编码

        //获取 "你好"  的GBK编码
        byte[] bs2 = "你好".getBytes("GBK");//GBK  编码

        System.out.println("你好 UTF-8编码: "+ Arrays.toString(bs1));
        System.out.println("你好 GBK编码: "+ Arrays.toString(bs2));

        System.out.println(new String(bs1,"GBK"));//你好  解码
        System.out.println(new String(bs2,"UTF-8"));//你好
    }
}
